package cn.yh.register.hosp.service;

import cn.yh.register.model.hosp.Schedule;
import cn.yh.register.vo.hosp.ScheduleOrderVo;
import cn.yh.register.vo.hosp.ScheduleQueryVo;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

public interface ScheduleService {

    /**
     * 保存排班
     * @param objectMap 排班信息
     */
    void saveSchedule(Map<String, Object> objectMap);

    /**
     * 分页查询排班列表
     * @param page 当前页
     * @param size 每页条数
     * @param queryVo 查询条件
     * @return  分页数据
     */
    Page<Schedule> findBypage(Integer page, Integer size, ScheduleQueryVo queryVo);

    /**
     * 删除排班
     * @param hoscode   医院编号
     * @param hosScheduleId 排班编号
     */
    void removeSchedule(String hoscode, String hosScheduleId);

    /**
     * 排班数据
     * @param page  当前页
     * @param size  每页条数
     * @param hoscode 医院编号
     * @param depcode 科室编号
     * @return  排班数据
     */
    Map<String,Object> getRuleSchedule(Integer page, Integer size,String hoscode,String depcode);

    /**
     * 查询某天的排班详情
     * @param hoscode 医院编号
     * @param depcode 科室编号
     * @param workDate 排班日期
     * @return  当天的排班日期
     */
    List<Schedule> getScheduleDatail(String hoscode, String depcode, String workDate);

    /**
     * 排班数据
     * @param page  当前页
     * @param size  每页条数
     * @param hoscode 医院编号
     * @param depcode 科室编号
     * @return  排班数据
     */
    Map<String,Object> getBookingScheduleRule(Integer page, Integer size,String hoscode,String depcode);

    /**
     * 查询排班详情
     * @param id 排班id
     * @return 排班详情
     */
    Schedule getById(String id);

    /**
     * 获取预约下单需要的排班数据
     * @param scheduleId 排班id
     * @return 预约下单需要的排班数据
     */
    ScheduleOrderVo getScheduleOrderVo (String scheduleId);

    /**
     * 更新号源
     * @param schedule 排班对象
     */
    void updateSchedule(Schedule schedule);

    /**
     * 根据医院排班主键获取排班信息
     * @param hosScheduleId 医院的排班主键
     * @return 排班信息
     */

    Schedule getSchedule(String hosScheduleId);
}
